package com.itheima.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;

/**
 * @author: zhengsuyang
 * @Desc:
 * @create: 2025-09-14 11:13
 **/
/*@Component
@Aspect*/
@Slf4j
public class MyAspect {
    // 切入点:匹配连接点的条件
    // 第一个*:代表类的返回值 第二个*：代表类名 第三个*代表类中方法名 ..代表:方法中参数
//    @Pointcut("execution(* com.itheima.service.impl.*.add*(..))")
    // 注解实现
    @Pointcut("@annotation(com.itheima.anno.RecodeTimeAnno)")
    public void pt(){

    }
    @Before("pt()")
    public void before(){
        // 方法执行前执行一次
        log.info("before....");
    }

    @After("pt()")
    public void after(){
        // 方法执行后执行一次
        log.info("after....");
    }

    @AfterThrowing("execution(* com.itheima.service.impl.*.*(..))\"))")
    public void afterThrowing(){
        // 方法出现异常执行一次
        log.info("afterThrowing...");
    }
    @AfterReturning("execution(* com.itheima.service.impl.*.*(..))\"))")
    public void afterReturning(){
        // 方法正常返回执行一次
        log.info("afterReturning...");
    }
}
